#include "gtklistbox.h"
#include "gtkstylecontext.h"
#include "gtksizegroup.h"
+#include "gtkboxlayout.h"
-struct _GtkInspectorActionsPrivate
+
+struct _GtkInspectorActions
{
+ GtkWidget parent;
+
GtkWidget *list;
GtkWidget *button;
GtkColumnViewColumn *name;
};
+typedef struct _GtkInspectorActionsClass
+{
+ GtkWidgetClass parent;
+} GtkInspectorActionsClass;
+
enum {
PROP_0,
PROP_BUTTON
};
-G_DEFINE_TYPE_WITH_PRIVATE (GtkInspectorActions, gtk_inspector_actions, GTK_TYPE_BOX)
+G_DEFINE_TYPE (GtkInspectorActions, gtk_inspector_actions, GTK_TYPE_WIDGET)
static void
gtk_inspector_actions_init (GtkInspectorActions *sl)
{
- sl->priv = gtk_inspector_actions_get_instance_private (sl);
+ GtkBoxLayout *layout;
+
gtk_widget_init_template (GTK_WIDGET (sl));
+
+ layout = GTK_BOX_LAYOUT (gtk_widget_get_layout_manager (GTK_WIDGET (sl)));
+ gtk_orientable_set_orientation (GTK_ORIENTABLE (layout), GTK_ORIENTATION_VERTICAL);
}
static void
GtkInspectorActions *sl)
{
ActionHolder *holder = action_holder_new (group, action_name);
- g_list_store_append (G_LIST_STORE (sl->priv->actions), holder);
+ g_list_store_append (G_LIST_STORE (sl->actions), holder);
g_object_unref (holder);
}
{
int i;
- for (i = 0; i < g_list_model_get_n_items (sl->priv->actions); i++)
+ for (i = 0; i < g_list_model_get_n_items (sl->actions); i++)
{
- ActionHolder *holder = g_list_model_get_item (sl->priv->actions, i);
+ ActionHolder *holder = g_list_model_get_item (sl->actions, i);
if (group == action_holder_get_group (holder) &&
strcmp (action_name, action_holder_get_name (holder)) == 0)
- g_list_store_remove (G_LIST_STORE (sl->priv->actions), i);
+ g_list_store_remove (G_LIST_STORE (sl->actions), i);
g_object_unref (holder);
}
{
int i;
- for (i = 0; i < g_list_model_get_n_items (sl->priv->actions); i++)
+ for (i = 0; i < g_list_model_get_n_items (sl->actions); i++)
{
- ActionHolder *holder = g_list_model_get_item (sl->priv->actions, i);
+ ActionHolder *holder = g_list_model_get_item (sl->actions, i);
if (group == action_holder_get_group (holder) &&
strcmp (action_name, action_holder_get_name (holder)) == 0)
- g_list_model_items_changed (sl->priv->actions, i, 1, 1);
+ g_list_model_items_changed (sl->actions, i, 1, 1);
g_object_unref (holder);
}
static void
refresh_all (GtkInspectorActions *sl)
{
- guint n = g_list_model_get_n_items (sl->priv->actions);
- g_list_model_items_changed (sl->priv->actions, 0, n, n);
+ guint n = g_list_model_get_n_items (sl->actions);
+ g_list_model_items_changed (sl->actions, 0, n, n);
}
static void
action_added_cb (group, names[i], sl);
g_strfreev (names);
- g_set_object (&sl->priv->group, group);
+ g_set_object (&sl->group, group);
}
static void
{
disconnect_group (group, sl);
- g_set_object (&sl->priv->group, NULL);
+ g_set_object (&sl->group, NULL);
}
void
g_object_set (page, "visible", FALSE, NULL);
- if (sl->priv->group)
- remove_group (sl, page, sl->priv->group);
+ if (sl->group)
+ remove_group (sl, page, sl->group);
- g_list_store_remove_all (G_LIST_STORE (sl->priv->actions));
+ g_list_store_remove_all (G_LIST_STORE (sl->actions));
if (GTK_IS_APPLICATION (object))
add_group (sl, page, G_ACTION_GROUP (object));
add_group (sl, page, G_ACTION_GROUP (muxer));
}
- gtk_column_view_sort_by_column (GTK_COLUMN_VIEW (sl->priv->list), sl->priv->name, GTK_SORT_ASCENDING);
+ gtk_column_view_sort_by_column (GTK_COLUMN_VIEW (sl->list), sl->name, GTK_SORT_ASCENDING);
}
static void
switch (param_id)
{
case PROP_BUTTON:
- g_value_set_object (value, sl->priv->button);
+ g_value_set_object (value, sl->button);
break;
default:
switch (param_id)
{
case PROP_BUTTON:
- sl->priv->button = g_value_get_object (value);
+ sl->button = g_value_get_object (value);
break;
default:
GListModel *sorted;
GListModel *model;
- g_signal_connect_swapped (sl->priv->button, "clicked",
+ g_signal_connect_swapped (sl->button, "clicked",
G_CALLBACK (refresh_all), sl);
sorter = gtk_string_sorter_new (gtk_cclosure_expression_new (G_TYPE_STRING,
0, NULL,
(GCallback)holder_name,
NULL, NULL));
- gtk_column_view_column_set_sorter (sl->priv->name, sorter);
+ gtk_column_view_column_set_sorter (sl->name, sorter);
g_object_unref (sorter);
- sl->priv->actions = G_LIST_MODEL (g_list_store_new (ACTION_TYPE_HOLDER));
- sorted = G_LIST_MODEL (gtk_sort_list_model_new (sl->priv->actions,
- gtk_column_view_get_sorter (GTK_COLUMN_VIEW (sl->priv->list))));
+ sl->actions = G_LIST_MODEL (g_list_store_new (ACTION_TYPE_HOLDER));
+ sorted = G_LIST_MODEL (gtk_sort_list_model_new (sl->actions,
+ gtk_column_view_get_sorter (GTK_COLUMN_VIEW (sl->list))));
model = G_LIST_MODEL (gtk_no_selection_new (sorted));
- gtk_column_view_set_model (GTK_COLUMN_VIEW (sl->priv->list), model);
+ gtk_column_view_set_model (GTK_COLUMN_VIEW (sl->list), model);
g_object_unref (sorted);
g_object_unref (model);
}
static void
-finalize (GObject *object)
+dispose (GObject *object)
{
GtkInspectorActions *sl = GTK_INSPECTOR_ACTIONS (object);
+ GtkWidget *child;
+
+ g_clear_object (&sl->actions);
- g_object_unref (sl->priv->actions);
+ while ((child = gtk_widget_get_first_child (GTK_WIDGET (sl))))
+ gtk_widget_unparent (child);
- G_OBJECT_CLASS (gtk_inspector_actions_parent_class)->finalize (object);
+ G_OBJECT_CLASS (gtk_inspector_actions_parent_class)->dispose (object);
}
static void
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
-
- object_class->finalize = finalize;
+
+ object_class->dispose = dispose;
object_class->get_property = get_property;
object_class->set_property = set_property;
object_class->constructed = constructed;
GTK_TYPE_WIDGET, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
gtk_widget_class_set_template_from_resource (widget_class, "/org/gtk/libgtk/inspector/actions.ui");
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorActions, list);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorActions, name);
+ gtk_widget_class_bind_template_child (widget_class, GtkInspectorActions, list);
+ gtk_widget_class_bind_template_child (widget_class, GtkInspectorActions, name);
gtk_widget_class_bind_template_callback (widget_class, setup_name_cb);
gtk_widget_class_bind_template_callback (widget_class, bind_name_cb);
gtk_widget_class_bind_template_callback (widget_class, setup_enabled_cb);
gtk_widget_class_bind_template_callback (widget_class, bind_state_cb);
gtk_widget_class_bind_template_callback (widget_class, bind_changes_cb);
gtk_widget_class_bind_template_callback (widget_class, unbind_changes_cb);
+
+ gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BOX_LAYOUT);
}
// vim: set et sw=2 ts=2: